
#include <stdio.h>
#include <malloc.h>
#include "arvore_sa.h"

int main (void)
{
        /* ----------------------------------------------------------------------
      Declarações e início para verificação do uso da memória dinâmica.
      ---------------------------------------------------------------------- */
        struct mallinfo info = mallinfo();
        int MemDinInicial = info.uordblks, MemDinFinal;
        /* ---------------------------------------------------------------------- */

        int op = 1;
        ArvoreSA *raiz = NULL;
        char teste[64];
        char compra[64];
        char vende[64];

        while (1)
        {
                printf("Opcao (0 para sair, 1 para inserir, 2 para consultar): ");
                scanf("%d",&op);
                if (op == 0)
                        break;
                if (op == 1)
                {
                        printf("Cidade compradora: ");
                        scanf("%s",compra);
                        printf("Cidade vendedora: ");
                        scanf("%s",vende);
                        printf("Produto a ser inserido: ");
                        scanf("%s",teste);
                        raiz = insere_arvore_sa(raiz,compra,vende,teste);
                        Imprime(raiz);
                        printf("\n");
                }
                if (op == 2)
                {
                        printf("Produto a ser consultado: ");
                        scanf("%s",teste);
                        consulta_arvore_sa(raiz,teste);
                }
                
        }
        libera_arvore_sa(&raiz);
        /* --------------------------------------------------------------------- */
           /* Verificação final do uso da memória dinâmica                          */
           /* --------------------------------------------------------------------- */
           info = mallinfo();
           MemDinFinal = info.uordblks;
           if (MemDinInicial!=MemDinFinal)
                 printf("\n\nMemoria dinamica nao foi totalmente liberada (%d, %d)\n",
           MemDinInicial,MemDinFinal);
        /* --------------------------------------------------------------------- */
        return 0;
}